import request from '@/utils/request'

/**
 * 订单模块API
 */
export default {
  /**
   * 提交订单
   * @param {Object} data 订单信息
   * @param {boolean} data.useCart 是否使用购物车
   * @param {Array} data.cartItemIds 购物车商品ID列表 (useCart为true时必填)
   * @param {Object} data.item 直接购买商品信息 (useCart为false时必填)
   * @param {number} data.item.productId 商品ID
   * @param {number} data.item.skuId SKU ID
   * @param {number} data.item.quantity 购买数量
   * @param {number} data.addressId 收货地址ID
   * @param {string} data.remark 订单备注
   * @returns {Promise<Array<number>>} 订单ID列表
   */
  submit: (data) => request.post('/api/v1/orders/submit', data),

  /**
   * 取消订单
   * @param {number} orderId 订单ID
   * @param {string} reason 取消原因
   */
  cancel: (orderId, reason) => request.post(`/api/v1/orders/${orderId}/cancel`, null, {
    params: { reason }
  }),

  /**
   * 支付订单
   * @param {number} id 订单ID
   * @param {string} paymentMethod 支付方式
   * @param {string} paymentNo 支付流水号
   * @returns {Promise<boolean>} 支付结果
   */
  pay: (id, paymentMethod, paymentNo) => request.post(`/api/v1/orders/${id}/pay`, null, {
    params: { paymentMethod, paymentNo }
  }),

  /**
   * 获取订单列表
   * @param {Object} params 查询参数
   * @param {number} params.pageNum 页码
   * @param {number} params.pageSize 每页数量
   * @param {string} params.status 订单状态
   */
  list: (params) => request.get('/api/v1/orders', { params }),

  /**
   * 获取订单详情
   * @param {number} orderId 订单ID
   */
  detail: (orderId) => request.get(`/api/v1/orders/${orderId}`),

  /**
   * 确认收货
   * @param {number} orderId 订单ID
   */
  confirm: (orderId) => request.post(`/api/v1/orders/${orderId}/confirm`),

  /**
   * 申请退款
   * @param {number} id 订单ID
   * @param {string} reason 退款原因
   * @returns {Promise<number>} 退款申请ID
   */
  refund: (id, reason) => request.post(`/api/v1/orders/${id}/refund`, null, {
    params: { reason }
  }),

  /**
   * 删除订单
   * @param {number} orderId 订单ID
   */
  delete: (orderId) => request.delete(`/api/v1/orders/${orderId}`),

  /**
   * 获取待付款订单列表
   * @param {Object} params 查询参数
   * @param {number} [params.pageNum=1] 页码 (最小值: 1)
   * @param {number} [params.pageSize=10] 每页条数 (最小值: 1)
   * @returns {Promise<Object>} 分页订单列表
   */
  getUnpaidOrders: (params = {}) => request.get('/api/v1/orders/unpaid', {
    params: {
      pageNum: params.pageNum || 1,
      pageSize: params.pageSize || 10
    }
  }),

  /**
   * 获取待发货订单列表
   * @param {Object} params 查询参数
   * @param {number} [params.pageNum=1] 页码 (最小值: 1)
   * @param {number} [params.pageSize=10] 每页条数 (最小值: 1)
   * @returns {Promise<Object>} 分页订单列表
   */
  getUnshippedOrders: (params = {}) => request.get('/api/v1/orders/unshipped', {
    params: {
      pageNum: params.pageNum || 1,
      pageSize: params.pageSize || 10
    }
  }),

  /**
   * 获取待收货订单列表
   * @param {Object} params 查询参数
   * @param {number} [params.pageNum=1] 页码 (最小值: 1)
   * @param {number} [params.pageSize=10] 每页条数 (最小值: 1)
   * @returns {Promise<Object>} 分页订单列表
   */
  getUnreceivedOrders: (params = {}) => request.get('/api/v1/orders/unreceived', {
    params: {
      pageNum: params.pageNum || 1,
      pageSize: params.pageSize || 10
    }
  })
}
